//整个项目api接口都在这个文件中，可以根据实际情况进行修改
import request from "./request";

export default {

    login(data) {
        return request({
            url: '/login',
            method: 'post',
            data
        })
    },


    /**
     *
     *
     *
     *
     *
     * 用户端接口
     *
     *
     *
     *
     *
     */


    //获取当前登陆用户的借阅历史,即已归还的借阅记录
    //传给前端数据为Result<List<BorrowRecordVO>>
    // public class Result<T> implements Serializable {

    // private Integer code; //编码：1成功，0和其它数字为失败
    // private String msg; //错误信息
    // private T data; //数据

    // public class BorrowRecordVO {
    // private String barCode;       // 图书条形码
    // @JsonFormat(pattern = "yyyy-MM-dd")
    // private Date borDate;         // 借阅日期
    // @JsonFormat(pattern = "yyyy-MM-dd")
    // private Date retDate;         // 应还日期
    // @JsonFormat(pattern = "yyyy-MM-dd")
    // private Date realRetDate;     // 实际归还日期
    // private String retStatus;     // 归还状态
    // private BigDecimal fineMoney; // 罚款金额
    // private String fineStatus;    // 罚款状态
    // private String bname;         // 书名
    // private String isbn;          // ISBN 编号
// }
    getReturnRecord() {
        return request({
            url: '/user/bookBorrow/returnedRecord',
            method: 'get'
        })
    },

    //获取当前登陆用户的未归还的借阅记录
    //传给前端的数据为Result<List<BorrowRecordVO>>
    // public class Result<T> implements Serializable {

    // private Integer code; //编码：1成功，0和其它数字为失败
    // private String msg; //错误信息
    // private T data; //数据

    //     public class BorrowRecordVO {
    //     private String barCode;       // 图书条形码
    //     @JsonFormat(pattern = "yyyy-MM-dd")
    //     private Date borDate;         // 借阅日期
    //     @JsonFormat(pattern = "yyyy-MM-dd")
    //     private Date retDate;         // 应还日期
    //     @JsonFormat(pattern = "yyyy-MM-dd")
    //     private Date realRetDate;     // 实际归还日期
    //     private String retStatus;     // 归还状态
    //     private BigDecimal fineMoney; // 罚款金额
    //     private String fineStatus;    // 罚款状态
    //     private String bname;         // 书名
    //     private String isbn;          // ISBN 编号
    // }

    getNotReturnedRecord() {
        return request({
            url: '/user/bookBorrow/notReturnedRecord',
            method: 'get'
        })
    },

    //条件分页查询图书列表
    //以下为data结构
    //     public class PageUserStudentDTO {
    //     /**
    //      * 当前页码
    //      */
    //     Integer pageNum;
    //     /**
    //      * 每页显示数量
    //      */
    //     Integer pageSize;
    //     /**
    //      * 作者
    //      */
    //     String author;
    //     /**
    //      * isbn号
    //      */
    //     String ISBN;
    //     /**
    //      * 出版机构
    //      */
    //     String publisher;
    //     /**
    //      * 书籍名称
    //      */
    //     String bname;
    // }
    // 传回前端的数据为Result<PageResult>
    // public class Result<T> implements Serializable {

    // private Integer code; //编码：1成功，0和其它数字为失败
    // private String msg; //错误信息
    // private T data; //数据

//     public class PageResult implements Serializable {

//     private long total; //总记录数

//     private List records; //当前页数据集合

// }

    //以下为返回给前端的page数据
    /**
 * 封装用户端显示的图书信息
 */
// public class UserBookVO {
//     /**
//      * 图书编号
//      */
//     private String barCode;
//     /**
//      * 图书ISBN
//      */
//     private String ISBN;
//     /**
//      * 图书存放位置
//      */
//     private String place;
//     /**
//      * 图书副本状态:1可借 2注销 0借出
//      */
//     private Integer status;
//     /**
//      * 图书名称
//      */
//     private String bname;
//     /**
//      * 图书作者
//      */
//     private String author;
//     /**
//      * 图书出版社
//      */
//     private String publisher;
//     /**
//      * 图书简介
//      */
//     private String introduction;
//     /**
//      * 图书出版时间
//      */
//     @JsonFormat(pattern = "yyyy-MM-dd")
//     private LocalDate pubDate;
//     /**
//      * 中图分类号
//      */
//     private String clcNum;
//     /**
//      * 图书状态:0下架1上架
//      */
//     private Integer bookStatus;
// }

    getUserBookList(params) {
        return request({
            url: '/user/student',
            method: 'get',
            data: params
        })
    },

    // 根据id查询图书信息
    // 传给前端的数据为Result<AdminBookVO>
    // public class AdminBookVO {

    //     private Integer id; // 图书ID
    //     private String ISBN;
    
    //     private String bname;//书名
    
    //     private String author;//作者
    
    //     private String publisher;// 出版社
    
    //     private String introduction;// 图书简介
    
    //     @JsonFormat(pattern = "yyyy-MM-dd")
    //     private LocalDate pubDate;
    
    //     private String clcNum;
    
    //     private Integer bookStatus;
    
    //     // 图书副本信息
    //     private List<Bookcopy> bookCopies; // 图书副本列表
    // }
    getBookByID(id){
        return request({
            url: `/user/student/${id}`,
            method: 'get'
        })
    },

    //新办图书证
    //以下为data结构
    //     public class LibcardDTO {
    //     /**
    //      * 学号
    //      */
    //     private String sno;

    //     /**
    //      * 姓名
    //      */
    //     private String sname;

    //     /**
    //      * 学生学历类型,如本科生,研究生
    //      */
    //     private String type;

    //     /**
    //      * 学院
    //      */
    //     private String collage;

    //     /**
    //      * 专业
    //      */
    //     private String major;

    //     /**
    //      * 出生年月日
    //      */
    //     private Date birth;

    //     /**
    //      * 籍贯
    //      */
    //     private String originPlace;
    // }
    newLibCard(data) {
        return request({
            url: '/user/libCard',
            method: 'post',
            data
        })
    },


    //挂失图书证
    lostLibCard() {
        return request({
            url: '/user/libCard',
            method: 'put',
        })
    },

    //注销图书证
    canceLibCard() {
        return request({
            url: '/user/libCard',
            method: 'delete',
        })
    },

    //补办学生证
    //以下为data结构
//     public class LibcardDTO {
//     /**
//      * 学号
//      */
//     private String sno;

//     /**
//      * 姓名
//      */
//     private String sname;

//     /**
//      * 学生学历类型,如本科生,研究生
//      */
//     private String type;

//     /**
//      * 学院
//      */
//     private String collage;

//     /**
//      * 专业
//      */
//     private String major;

//     /**
//      * 出生年月日
//      */
//     private Date birth;

//     /**
//      * 籍贯
//      */
//     private String originPlace;

// }
    renewLibCard(data) {
        return request({
            url: '/user/libCard/renew',
            method: 'post',
            data
        })
    },

    //查询当前月学生借书数量排名的前10名学生信息
    //这是返回给前端的数据Result<List<RankStudentVO>>
    // public class Result<T> implements Serializable {

    // private Integer code; //编码：1成功，0和其它数字为失败
    // private String msg; //错误信息
    // private T data; //数据

//     public class RankStudentVO {
//     /**
//      * 排名
//      */
//     private Integer rank;

//     /**
//      * 学号
//      */
//     private String sno;

//     /**
//      * 姓名
//      */
//     private String username;

//     /**
//      * 类型
//      */
//     private String type;

//     /**
//      * 学院
//      */
//     private String collage;

//     /**
//      * 专业
//      */
//     private String major;

//     /**
//      * 出生年月日
//      */
//     @JsonFormat(pattern = "yyyy-MM-dd")
//     private Date birth;

//     /**
//      * 籍贯
//      */
//     private String originPlace;
//     /**
//      * 借书数量
//      */
//     private Integer borrowCount;
// }
    getStudentTop10(){
        return request({
            url: '/user/rank/student',
            method: 'get'
        })
    },

    //查询当前月学生借书数量排名的前10名书籍信息
    //返回给前端的数据为Result<List<RankBookVO>>
    // public class Result<T> implements Serializable {

    // private Integer code; //编码：1成功，0和其它数字为失败
    // private String msg; //错误信息
    // private T data; //数据

//     public class RankBookVO {
//     /**
//      * 排名
//      */
//     private Integer rank;
//     /**
//      * 书籍的ISBN
//      */
//     private  String ISBN;
//     /**
//      * 书籍的名称
//      */
//     private String bookName;
//     /**
//      * 书籍的作者
//      */
//     private String author;
//     /**
//      * 书籍的借阅数量
//      */
//     private Integer borrowNumber;


// }
    getBookTop10(){
        return request({
            url: '/user/rank/book',
            method: 'get'
        })
    },

    //传入学生的学号和新密码
    //以下为data结构
    // public class LoginDTO {
    //     private String username;//如果是管理员,则为管理员名;如果是学生,则为学号
    //     private String password;
    // }
    //修改密码
    updateStudentPassword(data){
        return request({
            url: '/user/password',
            method: 'put',
            data
        })
    },

    //修改学生的个人信息
    //以下是data结构
//     public class StudentDTO {
//     /**
//      * id
//      */
//     private Integer id;

//     /**
//      * 学号
//      */
//     private String sno;

//     /**
//      * 姓名
//      */
//     private String username;

//     /**
//      * 类型
//      */
//     private String type;

//     /**
//      * 学院
//      */
//     private String collage;

//     /**
//      * 专业
//      */
//     private String major;

//     /**
//      * 出生年月日
//      */
//     private Date birth;

//     /**
//      * 籍贯
//      */
//     private String originPlace;

// }
    updateStudent(data){
        return request({
            url: '/user/student',
            method: 'put',
            data
        })
    },


    /**
     *
     *
     *
     *
     *
     * 管理端接口
     *
     *
     *
     *
     *
     */


    //条件分页查询图书列表
    //以下为params结构
    // public class PageBookDTO {
    //     private Integer page = 1; // 当前页码
    //     private Integer pageSize = 10; // 每页显示的记录数
    //
    //     private String author; // 作者
    //     private String ISBN; // ISBN号
    //     private String publisher;// 出版机构
    //     private String bname; // 书名
    //     private Integer bookStatus;// 图书状态 "0" 下架 "1" 上架
    // }
    //以下为返回给前端的数据Result<PageResult<AdminBookVO>>
    // public class AdminBookVO {

    // private Integer id; // 图书ID
    // private String ISBN;

    // private String bname;//书名

    // private String author;//作者

    // private String publisher;// 出版社

    // private String introduction;// 图书简介

    // @JsonFormat(pattern = "yyyy-MM-dd")
    // private LocalDate pubDate;

    // private String clcNum;

    // private Integer bookStatus;

    // // 图书副本信息
    // private List<Bookcopy> bookCopies; // 图书副本列表
// }
    getBookList(params){
        return request({
            url: '/admin/book',
            method: 'get',
            data: params
        })
    },

    // 根据id查询图书信息
    // 传给前端的数据为Result<AdminBookVO>
    // public class AdminBookVO {

    //     private Integer id; // 图书ID
    //     private String ISBN;
    
    //     private String bname;//书名
    
    //     private String author;//作者
    
    //     private String publisher;// 出版社
    
    //     private String introduction;// 图书简介
    
    //     @JsonFormat(pattern = "yyyy-MM-dd")
    //     private LocalDate pubDate;
    
    //     private String clcNum;
    
    //     private Integer bookStatus;
    
    //     // 图书副本信息
    //     private List<Bookcopy> bookCopies; // 图书副本列表
    // }
    getBookById(id){
        return request({
            url: `/admin/book/${id}`,
            method: 'get'
        })
    },

    // 编辑图书信息
    //以下为data结构
    // public class BookDTO {

    //     private Integer id ;
    //     private String isbn; // ISBN号
    //     private String bname; // 书名
    //     private String author; // 作者
    //     private String publisher; // 出版社
    //     private String introduction; // 简介
    //     // 上面是编辑需要传的信息，下面是新增需要新传的信息
    //     @DateTimeFormat(pattern = "yyyy-MM-dd")
    //     private LocalDate pubDate; // 出版日期
    //     private String clcNum;// 中图分类号
    //     private Integer bookStatus; // 图书状态 0:下架 1:上架
    
    //     List<Bookcopy> bookCopies; // 图书副本列表
    // }
    editBook(data){
        return request({
            url: '/admin/book',
            method: 'put',
            data
        })
    },

    // 新书入库
    //以下为data结构
    // public class BookDTO {

    //     private Integer id ;
    //     private String isbn; // ISBN号
    //     private String bname; // 书名
    //     private String author; // 作者
    //     private String publisher; // 出版社
    //     private String introduction; // 简介
    //     // 上面是编辑需要传的信息，下面是新增需要新传的信息
    //     @DateTimeFormat(pattern = "yyyy-MM-dd")
    //     private LocalDate pubDate; // 出版日期
    //     private String clcNum;// 中图分类号
    //     private Integer bookStatus; // 图书状态 0:下架 1:上架
    
    //     List<Bookcopy> bookCopies; // 图书副本列表
    // }
    addBook(data){
        return request({
            url: '/admin/book',
            method: 'post',
            data
        })
    },

    // 书籍报废(根据条形码将图书副本状态变为2)
    deleteBookcopy(barCode){
        return request({
            url: `/admin/book/bookcopy/${barCode}`,
            method: 'delete',
        })
    },

    // 书籍下架(根据id下架图书信息以及副本状态设为2)
    deleteBook(id){
        return request({
            url: `/admin/book/${id}`,
            method: 'delete',
        })
    },

    //借书证列表及查询
    //以下为params结构
    //@GetMapping("/list")
	// public Result student(@RequestParam(required = false) String sno)
    //以下为返回给前端的数据Result<List<Cardrec>>
    // public class Cardrec {
    //     /**
    //      * 流水号
    //      */
    //     private Integer serNum;
    
    //     /**
    //      * 学号
    //      */
    //     private String sno;
    
    //     /**
    //      * 原卡号
    //      */
    //     private String originCardNo;
    
    //     /**
    //      * 新卡号
    //      */
    //     private String newCardNo;
    
    //     /**
    //      * 操作类型
    //      */
    //     private String opType;
    // }
    getLibCardList(params){
        return request({
            url: '/admin/student/list',
            method: 'get',
            data: params
        })
    },

    //登记借书功能
    //以下为data结构
    // public class BorrowDTO {
    //     private  String cardNo;
    
    //     private  String barCode;
    
    //     private Date retDate;
    
    // }
    borrowBook(data){
        return request({
            url: '/admin/BandR/borrow',
            method: 'post',
            data
        })
    },

    //归还图书功能
    //以下为data结构
    // public class ReturnVO {
    //     private  String cardNo;
    //     private  String barCode;
    
    // }
    returnBook(data){
        return request({
            url: '/admin/BandR/return',
            method: 'post',
            data
        })
    },

    // 条件分页查询学生借阅记录
    //以下为params结构
    // public class PageBorrowBookDTO {
    //     private Integer page =1;
    //     private Integer pageSize = 10;
    //     private String sno; // 学号
    //     private String barCode; // 图书条形码
    //     @DateTimeFormat(pattern = "yyyy-MM-dd")
    //     private LocalDate borDate; // 借书日期，得到日期大于这个字段的记录
    //     private String retStatus; // 还书状态
    //     private String bname; // 书名
    // }
    //以下为返回给前端的数据Result<PageResult<AdminBorrowRecordVO>>
    // public class AdminBorrowRecordVO {
    //     private String sno;            // 学号
    //     private String barCode;       // 图书条形码
    //     @JsonFormat(pattern = "yyyy-MM-dd")
    //     private Date borDate;         // 借阅日期
    //     @JsonFormat(pattern = "yyyy-MM-dd")
    //     private Date retDate;         // 应还日期
    //     @JsonFormat(pattern = "yyyy-MM-dd")
    //     private Date realRetDate;     // 实际归还日期
    //     private String retStatus;     // 归还状态
    //     private BigDecimal fineMoney; // 罚款金额
    //     private String fineStatus;    // 罚款状态
    //     private String paySerNum;     // 付款流水号
    //     private String bname;         // 书名
    //     private String isbn;          // ISBN 编号
    // }
    getStudentBorrowRecord(params){
        return request({
            url: '/admin/bookBorrow',
            method: 'get',
            data: params
        })
    },

    //查询罚款记录
    //以下为params
    // @GetMapping("/select")
	// public Result select(@RequestParam(required = false)String sno) {
    //以下为返回给前端的数据Result<List<PayrecDTO>>
    // public class PayrecDTO {

	// 	/**
	// 	 * 付款流水号
	// 	 */
	// 	private Integer serNum;

	// 	private String  username;

	// 	/**
	// 	 * 学号
	// 	 */
	// 	private String  sno;

	// 	/**
	// 	 * 付款金额
	// 	 */
	// 	private BigDecimal payAmount;

	// 	/**
	// 	 * 付款日期
	// 	 */
	// 	private Date     payDate;

// }
    getFineRecord(params){
        return request({
            url: '/admin/fine/select',
            method: 'get',
            data: params
        })
    },

    //登记缴纳罚款
    //以下为data结构
    // public class PayVO {


    //     /**
    //      * 学号
    //      */
    //     private String  sno;
    
    //     /**
    //      * 付款金额
    //      */
    //     private BigDecimal payAmount;
    
    // }
    payFine(data){
        return request({
            url: '/admin/fine/pay',
            method: 'post',
            data
        })
    },

    //管理员修改密码
    //以下为data
    // @PostMapping("/update")
	// public Result update(@RequestParam String password) {
    updatePassword(params){
        return request({
            url: '/admin/personal/update',
            method: 'get',
            data: params
        })
    },

    getStudentInfo(){
        return request({
            url: '/user/student/info',
            method: 'get'
        })
    }
}
